/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tecprog.beans;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.util.logging.Logger;
import tecprog.model.*;
import tecprog.model.exceptions.NonexistentEntityException;
import tecprog.model.exceptions.PreexistingEntityException;
import java.util.List;
import tecprog.service.TipoAdministradorService;

/**
 *
 * @author Igor
 */
@ManagedBean
@SessionScoped
public class AdministradorBean implements Serializable{

    private static final Logger log = Logger.getLogger(AlunoBean.class.getName());
    
    
    private List<Administrador> administradores;
    
    private Administrador administrador;
    
    private TipoAdministradorService service;
  
    /** Cria uma nova estancia AdminsitradorBean */
    public AdministradorBean() {
        service = new TipoAdministradorService();
        atualizarTiposAdministrador();
    
    }
    
    public Administrador getAdministrador() {
        return administrador;
    }

    public void setAdministrador(Administrador administrador) {
          log.info("Compara admin istradores");
        this.administrador = administrador;
    }

    public List<Administrador> getAdministradores() {
        return administradores;
    }

    public void setAdministradores(List<Administrador> administradores) {
        this.administradores = administradores;
    }
    
    /**
     * Cria um novo objeto Adminsitrador
     * @throws PreexistingEntityException
     * @throws Exception 
     */
    public void criar() throws PreexistingEntityException, Exception {
        setAdministrador(new Administrador());
    }
    
    /**
     * Salva a lista atual de aluno.
     * @throws PreexistingEntityException
     * @throws Exception 
     */
    public void salvar() throws PreexistingEntityException, Exception {
        service.salvar(administrador);
        log.info("Salva a informação.");
        atualizarTiposAdministrador();
        
    }
    
    /**
     * Cancela determinada operação 
     */
    public void cancelar() {
       log.info("Operação cancelada.");
        atualizarTiposAdministrador();
        //botaoNovo = true;
        //botaoExcluir = true;
        
    }
    
    /*
     * Exclui determinado item da lista de adminsitradores
     */
    public void excluir() throws NonexistentEntityException {
        service.excluir(administrador);
     log.info("Operação de exclusão.");
        atualizarTiposAdministrador();
    }

    /**
     * Atualiza a lista de adminsitradores.
     */
    private void atualizarTiposAdministrador() {
        administradores = service.recarregar();
        administrador = administradores.get(0);
    }
    
    /**
     * Possibilita a validaçao do loguin na area de administradores
     * @return 
     */
    public String login(){
        return service.efetuarLogin(administrador.getMatriculaaplicador(), administrador.getSenha());
    }
}
